<?php
/**
 * CRUD de vendas
 * 
 * @author Vinicius Rodrigues (viniciusmr3@gmail.com)
 * @since 30/11/2012
 */
//necessário para todas as páginas do admin (facilitador)
include("defaultAdmin.php");
require_once(PASTA_DAO."HistoricoVenda.class.php");
require_once(PASTA_DAO."Transacao.class.php");
require_once(PASTA_DAO."Usuario.class.php");


//verificação se o usuário esta logado, cado contrário, este será redirecionado para o login.
if($objUsrSession->getIdAdministrador() == 0){
	HttpUtil::vaiPara("login.php?msg=1");
}


/**
 * VERIFICAÇÃO DA TELA QUE SERÁ EXIBIDA
 */
 if(!isset($_GET["id"]))
	$id = "";
else
	$id = (int)$_GET["id"];
if(!is_numeric($id) || $id == 0 || $id=="") 
	$id = null;
$objCtrlSmarty->assign("id_vendas",$id);
$objVenda = new HistoricoVenda();
$objUsuario = new Usuario();
$objTransacao = new Transacao();
if(!isset($_GET["a"]))
	$_GET["a"] = "";
switch ($_GET["a"]){
	case 'form':
		if(isset($id)){
			//busco os dados do banco
			$arrCampos = $objVenda->buscaCampos($id);
			
			//seto no formulário os valores dos campos automaticamente
			foreach ($arrCampos as $nomeCampo => $fieldData) {
				if($nomeCampo == "data_venda" || $nomeCampo == "data_venc_pontos" 
					|| $nomeCampo == "data_pgto_reserva_tec" || $nomeCampo == "data_entrega")
					$objCtrlSmarty->assign($nomeCampo,FormataDatas::formataDataBR($fieldData));
				else if($nomeCampo == "valor_venda" || $nomeCampo == "valor_liquido" || $nomeCampo == "valor_reserva_tec")
					$objCtrlSmarty->assign($nomeCampo,number_format($fieldData, 2, ',', '.'));
				else
					$objCtrlSmarty->assign($nomeCampo,utf8_encode($fieldData));
			}
			
		}
		$objCtrlSmarty->assign("CONTEUDO_ADMIN",$objCtrlSmarty->fetch(TPLS_FILE."admin/formVendas.tpl"));
		break;
	case 'post':
		try{
			//validação
			$arrErros = array();
			$dataVencimentoPontos = FormataDatas::parseDataSql($_POST["data_venc_pontos"]);
			if($_POST["data_venc_pontos"]!="" && $dataVencimentoPontos == "")
				$arrErros["MENS_ERRO_DATA_VENC_PONTOS"] = "Data de vencimento dos pontos é inválida";	
			else 
				$_POST["data_venc_pontos"] = FormataDatas::parseDataSql($_POST["data_venc_pontos"]);
				
			$dataPgReserva = FormataDatas::parseDataSql($_POST["data_pgto_reserva_tec"]);
			if($_POST["data_pgto_reserva_tec"]!="" && $dataPgReserva == "")
				$arrErros["MENS_ERRO_DT_RESERVA"] = "Data de pagamento da reserva técnica é inválida";	
			else 
				$_POST["data_pgto_reserva_tec"] = FormataDatas::parseDataSql($_POST["data_pgto_reserva_tec"]);
			
			$dataVenda = FormataDatas::parseDataSql($_POST["data_venda"]);
			if($_POST["data_venda"]!="" && $dataVenda == "")
				$arrErros["MENS_ERRO_DT_VENDA"] = "Data da venda é inválida";	
			else 
				$_POST["data_venda"] = FormataDatas::parseDataSql($_POST["data_venda"]);
				
			$dataEntrega = FormataDatas::parseDataSql($_POST["data_entrega"]);
			if($_POST["data_entrega"]!="" && $dataEntrega == "")
				$arrErros["MENS_ERRO_DT_ENTREGA"] = "Data de entrega é inválida";			
			else 
				$_POST["data_entrega"] = FormataDatas::parseDataSql($_POST["data_entrega"]);
			
			if($_POST["cpf_usuario"]=="")
				$arrErros["MENS_ERRO_CPF"] = "O cpf é obrigatório";	
			else {
				$searchArray = array(".", "-","/");
	   			$replaceArray = array("", "", "");
	   			$_POST["cpf_usuario"] = str_replace($searchArray, $replaceArray, $_POST["cpf_usuario"]);
			}
			//if($objUsuario->verificaCpf($_POST["cpf_usuario"]) == false) {
			//	$arrErros["MENS_ERRO_CPF"] = "CPF inválido";
				//$objCtrlSmarty->assign("cpf_usuario",);
			//}
			/**if($_POST["id_usuario"]=="")
				$arrErros["MENS_ERRO_RESPONSAVEL"] = "O responsável pela venda é obrigatório";
			if($_POST["cod_venda"]=="")
				$arrErros["MENS_ERRO_CODIGO"] = "O código da venda é obrigatório";
			if($_POST["data_venda"]=="")
				$arrErros["MENS_ERRO_DT_VENDA"] = "A data da venda é obrigatória";
			if($_POST["data_entrega"]=="")
				$arrErros["MENS_ERRO_DT_ENTREGA"] = "A data da entrega é obrigatória";
			if($_POST["nome_cliente"]=="")
				$arrErros["MENS_ERRO_CLIENTE"] = "O nome do cliente é obrigatório";
			if($_POST["valor_venda"]=="")
				$arrErros["MENS_ERRO_VALOR_VENDA"] = "O valor da venda é obrigatório";
			if($_POST["valor_reserva_tec"]=="")
				$arrErros["MENS_ERRO_VALOR_RESERVA"] = "O valor da reserva técnica é obrigatório";
			if($_POST["data_pgto_reserva_tec"]=="")
				$arrErros["MENS_ERRO_DT_RESERVA"] = "A data do pagamento da reserva técnica é obrigatório";
			//fim validação dos dados**/
			
			if(count($arrErros) == 0){
				//Retira as mascaras
				$searchArray = array(".", ",");
	   			$replaceArray = array("", ".");
	   			
				$_POST["valor_reserva_tec"] = str_replace($searchArray, $replaceArray, $_POST["valor_reserva_tec"]);
				$_POST["valor_liquido"] = str_replace($searchArray, $replaceArray, $_POST["valor_liquido"]);
				$_POST["valor_venda"] = str_replace($searchArray, $replaceArray, $_POST["valor_venda"]);
				$_POST["expirado"]  = 0;
				
				$id = (int)$_POST["id_vendas"];
				if(!is_numeric($id) || $id == 0 || $id=="") 
					$id = null;
				$objVenda->alterar($id,$_POST,$_FILES);
				$arrUsuario = $objUsuario->getUsuarioPorCpf($_POST["cpf_usuario"]);
				if($_POST["tipo"] == "C") {
					$arrayTransacao = array();
					$arrayTransacao["id_usuario"] = $arrUsuario[0]["id_usuario"];
					$arrayTransacao["tipo_transacao"] = 3;
					$arrayTransacao["id_venda"] = $objVenda->getIdVenda();
					$arrayTransacao["valor_transacao"] = $_POST["qtd_pontos"];
						
					$objTransacao->alterar(null,$arrayTransacao,null);
				}
				HttpUtil::vaiPara("CrudVendas.php?msg=3");
			}else{
				//loop para preencher, em caso de erro, o formulário
				foreach ($_POST as $nomeCampo => $fieldData) {
					$objCtrlSmarty->assign($nomeCampo,utf8_encode($fieldData));
				}
				//loop para setar os lugares com os erros
				foreach ($arrErros as $nomeErro => $conteudo) {
					$objCtrlSmarty->assign($nomeErro,$conteudo);
				}
				//exibo o form aqui
				$objCtrlSmarty->assign("CONTEUDO_ADMIN",$objCtrlSmarty->fetch(TPLS_FILE."admin/formVendas.tpl"));
			}
		}catch(CustonException $e){
			HttpUtil::vaiPara("CrudVendas.php?msg=5");
		}
		break;
	case 'excluir':
		$transacao = $objTransacao->getTransacaoPorVenda($id);
		$objTransacao->deletar($transacao["id_transacao"]);
		$objVenda->deletar($id);
		HttpUtil::vaiPara("CrudVendas.php?msg=4");
		break;
	
	case 'lista':
	default:
		if(isset($_GET["p"]) && $_GET["p"]!="" && is_numeric($_GET["p"]))
			$pagAtual = (int)$_GET["p"];
		else 
			$pagAtual = 0;	
		$objCtrlSmarty->assign("pagAtual", $pagAtual);
		$objCtrlSmarty->assign("CONTEUDO_ADMIN",$objCtrlSmarty->fetch(TPLS_FILE."admin/listaVendas.tpl"));
	break;
}

//definição da estrutura do admin <cabecalho, corpo e rodape>
$objCtrlSmarty->assign("ESTRUTURA",$objCtrlSmarty->fetch(TPLS_FILE."admin/adminEstrutura.tpl"));

//ultima coisa que deve ter no arquivo, serve para imprimir a tela
$objCtrlSmarty->display(TPLS_FILE."index.tpl");
?>